package net.pimpas.operation.serviceprovider;

import net.pimpas.core.serviceprovider.ServiceProvider;
import net.pimpas.operation.exception.OperationException;
import net.pimpas.operation.operation.Operation;

public interface OperationServiceProvider<T,V extends Operation> extends ServiceProvider {
	
	T call( V op, Object... parameters ) throws OperationException;
	T call( V op, V parent, Object... parameters ) throws OperationException;
	T call(String name, Object... parameters ) throws OperationException;
	T call(String name, V parent, Object... parameters ) throws OperationException;
	T call(String name, Class operationType, Object... parameters) throws OperationException;
	T call(String name, V parent, Class operationType, Object... parameters) throws OperationException;
	
}